const http = require("http")

setTimeout(function f1() {
    console.log('setTimeout')
}, 5000)
console.log('hello')

const app = http.createServer((req, res) => {
    console.log('request in ')
})

app.listen(3000, () => console.log('start server'))

// 执行解析

// 开始执行

// 输出：start server

// 检查是否要进入事件循环 要 （定时器，用户请求）

// 进入 timers 是否有计时器的回调 没有， 进入下一队列 poll

// poll 队列， 有没有回调，没有，一直等待 （等待定时器加入timers, 或者用户请求进入添加回调到poll）

// 5秒后 定时器回调f1加入timers， poll 队列结束， 进入下一队列 check

// check 队列没有回调， 结束

// 检查是否要进入事件循环 要

// 进入 timers 是否有计时器的回调 有， 依次执行回调  进入下一队列 poll

// 输出：setTimeout

// poll 队列， 有没有回调，没有，一直等待 （等待用户请求进入添加回调到poll）

// 用户请求 添加回调到 poll，执行回调，poll 队列结束， 进入下一队列 check

// 输出：request in 

// check 队列没有回调， 结束

// 检查是否要进入事件循环 要

// 进入 timers 是否有计时器的回调 没有，进入下一队列 poll

// poll 队列， 有没有回调，没有，一直等待 （等待用户请求进入添加回调到poll）

// 等待下一次请求 ...

// 直到等得时间足够长, 操作系统都受不了, 然后结束poll, 重新进行事件循环, poll 再次等待